package com.easydroid.services;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.client.methods.HttpRequestBase;
import android.util.Log;
import com.easydroid.domains.HttpDeleteWithBody;
import com.easydroid.domains.ResponseContainer;
import com.easydroid.utils.EasyCommonUtils;
import com.easydroid.utils.EasyDroid;
import com.easydroid.utils.RequestMethod;
import com.easydroid.utils.ResponseFormat;
public abstract class EasyServiceRequest {
protected final String TAG = getClass().getName();
protected final String HTTP_METHOD = "http://";
protected final String SECURE_HTTP_METHOD = "https://";
protected String url;
protected String path="";
protected String method="";
protected String contentType;
protected boolean isSecureConnectionRequest;
protected int requestCode;
protected int connectionTimeout;
protected RequestMethod requestMethod;
protected Class<? extends ResponseContainer> responsibleClass = ResponseContainer.class;
protected ResponseFormat responseFormat = ResponseFormat.JSON;
public EasyServiceRequest(RequestMethod requestMethod, String contentType) {
this.url = EasyDroid.BASE_URL;
this.connectionTimeout = EasyRestClient.MAX_CONNECTION_TIMEOUT;
this.requestMethod = requestMethod;
this.contentType = contentType;
}
public EasyServiceRequest(RequestMethod requestMethod) {
this.url = EasyDroid.BASE_URL;
this.connectionTimeout = EasyRestClient.MAX_CONNECTION_TIMEOUT;
this.requestMethod = requestMethod;
}
private EasyServiceRequest() {
}
public abstract HttpRequestBase createHttpRequest();
public RequestMethod getRequestMethod() {
return requestMethod;
}
public HttpRequestBase getHttpRequest(String uri, HttpEntity httpEntity) {
HttpEntityEnclosingRequestBase httpEntityEnclosingBaseRequest = null;
switch (requestMethod) {
case POST:
httpEntityEnclosingBaseRequest = new HttpPost(uri);
break;
case PUT:
httpEntityEnclosingBaseRequest = new HttpPut(url);
break;
case DELETE:
httpEntityEnclosingBaseRequest = new HttpDeleteWithBody(uri);
break;
default:
return httpEntityEnclosingBaseRequest;
}
if(contentType != null)
httpEntityEnclosingBaseRequest.addHeader("content-type", contentType);
httpEntityEnclosingBaseRequest.setEntity(httpEntity);
if(EasyDroid.enableLogging) {
try {
Log.d(TAG, EasyCommonUtils.convertStreamToString(httpEntity.getContent()));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedOperationException e) {
e.printStackTrace();
}
}
return httpEntityEnclosingBaseRequest;
}
public void setRequestMethod(RequestMethod requestMethod) {
this.requestMethod = requestMethod;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
public boolean isSecureConnectionRequest() {
return isSecureConnectionRequest;
}
public void setSecureConnectionRequest(boolean isSecureConnectionRequest) {
this.isSecureConnectionRequest = isSecureConnectionRequest;
}
public int getRequestCode() {
return requestCode;
}
public void setRequestCode(int requestCode) {
this.requestCode = requestCode;
}
public int getConnectionTimeout() {
return connectionTimeout;
}
public void setConnectionTimeout(int connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}
public Class<? extends ResponseContainer> getResponsibleClass() {
return responsibleClass;
}
public void setResponsibleClass(
Class<? extends ResponseContainer> responsibleClass) {
this.responsibleClass = responsibleClass;
}
public ResponseFormat getResponseFormat() {
return responseFormat;
}
public void setResponseFormat(ResponseFormat responseFormat) {
this.responseFormat = responseFormat;
}
}